// pages/openShop/openShop.js
Page({
    data: {
      shopName: '',
      ownerName: '',
      contact: '',
      businessScope: '',
      shopAddress: '',
      imageUrl: '',
      formData: {
        businessHours: '',
        introduction: '',
        category: '',
        licenseNumber: '',
        licenseImg: '',
        bankAccount: '',
        bankName: '',
        bankHolder: ''
      },
      categoryList: ['餐饮美食', '零售百货', '休闲娱乐', '生活服务', '丽人美妆', '教育培训', '母婴亲子', '运动健身', '酒店住宿', '家居建材', '数码电器', '汽车服务', '宠物服务', '其他行业'],
      isAgree: false,
      showCategory: false,
      isLoading: false
    },
  
    onLoad(options) {
      // 页面加载时的初始化操作
    },
  
    onReady() {
      // 页面初次渲染完成时执行
    },
  
    onShow() {
      // 页面显示时执行
    },
  
    onHide() {
      // 页面隐藏时执行
    },
  
    onUnload() {
      // 页面卸载时执行
    },
  
    // 表单输入事件处理
    onInput(e) {
      const { field } = e.currentTarget.dataset;
      const value = e.detail.value;
      this.setData({
        [field]: value
      });
    },
  
    // 表单数据输入事件处理
    onFormDataInput(e) {
      const { field } = e.currentTarget.dataset;
      const value = e.detail.value;
      this.setData({
        [`formData.${field}`]: value
      });
    },
  
    // 选择经营类别
    selectCategory(e) {
      const { index } = e.currentTarget.dataset;
      const category = this.data.categoryList[index];
      this.setData({
        'formData.category': category,
        showCategory: false
      });
    },
  
    // 显示经营类别选择
    toggleCategory() {
      this.setData({
        showCategory: !this.data.showCategory
      });
    },
  
    // 关闭经营类别选择
    closeCategory() {
      this.setData({
        showCategory: false
      });
    },
  
    // 上传图片
    uploadImage(field) {
      const that = this;
      wx.chooseImage({
        count: 1,
        sizeType: ['original', 'compressed'],
        sourceType: ['album', 'camera'],
        success(res) {
          const tempFilePaths = res.tempFilePaths[0];
          that.setData({
            [field]: tempFilePaths
          });
          // 上传到服务器示例
          that.uploadFileToServer(tempFilePaths, field);
        },
        fail(err) {
          console.error('选择图片失败:', err);
          wx.showToast({
            title: '选择图片失败',
            icon: 'none'
          });
        }
      });
    },
  
    // 上传店铺图片
    uploadShopImage() {
      this.uploadImage('imageUrl');
    },
  
    // 上传营业执照
    uploadLicenseImage() {
      this.uploadImage('formData.licenseImg');
    },
  
    // 上传文件到服务器
    uploadFileToServer(filePath, field) {
      const that = this;
      this.setData({
        isLoading: true
      });
      wx.uploadFile({
        url: 'https://your-api-domain.com/upload', // 替换为实际的上传接口
        filePath: filePath,
        name: 'file',
        formData: {
          field: field
        },
        success(res) {
          const data = JSON.parse(res.data);
          if (data.code === 200) {
            // 更新图片URL为服务器返回的URL
            if (field === 'imageUrl') {
              that.setData({
                imageUrl: data.data.url
              });
            } else {
              that.setData({
                [`formData.${field}`]: data.data.url
              });
            }
            wx.showToast({
              title: '上传成功',
              icon: 'success'
            });
          } else {
            wx.showToast({
              title: data.message || '上传失败',
              icon: 'none'
            });
          }
        },
        fail(err) {
          console.error('上传失败:', err);
          wx.showToast({
            title: '上传失败',
            icon: 'none'
          });
        },
        complete() {
          that.setData({
            isLoading: false
          });
        }
      });
    },
  
    // 切换协议同意状态
    toggleAgree() {
      this.setData({
        isAgree: !this.data.isAgree
      });
    },
  
    // 表单提交
    submitForm() {
      const { shopName, ownerName, contact, businessScope, shopAddress, imageUrl, formData, isAgree } = this.data;
      
      // 表单验证
      if (!shopName) {
        return wx.showToast({
          title: '请输入店铺名称',
          icon: 'none'
        });
      }
  
      if (!ownerName) {
        return wx.showToast({
          title: '请输入店主姓名',
          icon: 'none'
        });
      }
  
      if (!contact) {
        return wx.showToast({
          title: '请输入联系方式',
          icon: 'none'
        });
      }
  
      // 手机号格式验证
      const phoneReg = /^1[3-9]\d{9}$/;
      if (!phoneReg.test(contact)) {
        return wx.showToast({
          title: '请输入正确的手机号',
          icon: 'none'
        });
      }
  
      if (!businessScope) {
        return wx.showToast({
          title: '请输入经营范围',
          icon: 'none'
        });
      }
  
      if (!shopAddress) {
        return wx.showToast({
          title: '请输入开店地址',
          icon: 'none'
        });
      }
  
      if (!imageUrl) {
        return wx.showToast({
          title: '请上传店铺图片',
          icon: 'none'
        });
      }
  
      if (!formData.category) {
        return wx.showToast({
          title: '请选择经营类别',
          icon: 'none'
        });
      }
  
      if (!formData.licenseNumber) {
        return wx.showToast({
          title: '请输入营业执照号',
          icon: 'none'
        });
      }
  
      if (!formData.licenseImg) {
        return wx.showToast({
          title: '请上传营业执照',
          icon: 'none'
        });
      }
  
      if (!formData.bankAccount) {
        return wx.showToast({
          title: '请输入银行账号',
          icon: 'none'
        });
      }
  
      if (!formData.bankName) {
        return wx.showToast({
          title: '请输入开户行名称',
          icon: 'none'
        });
      }
  
      if (!formData.bankHolder) {
        return wx.showToast({
          title: '请输入开户人姓名',
          icon: 'none'
        });
      }
  
      if (!isAgree) {
        return wx.showToast({
          title: '请同意服务协议',
          icon: 'none'
        });
      }
  
      // 准备提交的数据
      const submitData = {
        shopName,
        ownerName,
        contact,
        businessScope,
        shopAddress,
        imageUrl,
        ...formData
      };
  
      // 显示加载提示
      wx.showLoading({
        title: '提交中...',
        mask: true
      });
  
      // 模拟API请求
      setTimeout(() => {
        // 实际开发中替换为真实的API请求
        wx.request({
          url: 'https://your-api-domain.com/submit-shop-info', // 替换为实际的API接口
          method: 'POST',
          data: submitData,
          success(res) {
            if (res.data.code === 200) {
              wx.showToast({
                title: '提交成功',
                icon: 'success',
                duration: 2000
              });
              
              // 提交成功后跳转到成功页面或返回上一页
              setTimeout(() => {
                wx.navigateBack();
              }, 2000);
            } else {
              wx.showToast({
                title: res.data.message || '提交失败',
                icon: 'none'
              });
            }
          },
          fail(err) {
            console.error('提交失败:', err);
            wx.showToast({
              title: '网络错误，请稍后再试',
              icon: 'none'
            });
          },
          complete() {
            wx.hideLoading();
          }
        });
      }, 1000);
    },
  
    // 选择地址
    chooseLocation() {
      const that = this;
      wx.chooseLocation({
        success(res) {
          that.setData({
            shopAddress: `${res.address} ${res.name}`
          });
        },
        fail(err) {
          console.error('选择地址失败:', err);
          if (err.errMsg.includes('auth deny')) {
            wx.showModal({
              title: '提示',
              content: '您拒绝了位置授权，可能无法准确获取地址信息，是否前往设置授权？',
              success(res) {
                if (res.confirm) {
                  wx.openSetting();
                }
              }
            });
          }
        }
      });
    },
  
    // 预览图片
    previewImage(e) {
      const { src } = e.currentTarget.dataset;
      wx.previewImage({
        urls: [src],
        current: src
      });
    },
  
    // 查看协议
    viewProtocol() {
      wx.navigateTo({
        url: '/pages/protocol/protocol' // 替换为实际的协议页面路径
      });
    }
  });    